package com.smart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.smart.common.PageInfo;
import com.smart.common.WebResponse;
import com.smart.model.domain.ProjectUseControlDO;
import com.smart.model.request.OperateProjectRequest;
import com.smart.model.request.ProjectUseControlRequest;
import com.smart.model.vo.ProjectUseControlVO;

import java.util.List;
import java.util.Map;

/**
 * @author zhanghong
 */
public interface ProjectUseControlService extends IService<ProjectUseControlDO> {

    /**
     * 根据项目id查询
     * @param projectId
     * @return
     */
     ProjectUseControlVO getByProjectId(long projectId);
    /**
     * 分页查询，手动分页
     * @param request
     * @return
     */
    PageInfo<ProjectUseControlVO> pageQuery(OperateProjectRequest request);
    /**
     * 列表查询
     * @param request
     * @return
     */
    List<ProjectUseControlVO> listQuery(ProjectUseControlRequest request);
    /**
     * 新增
     * @param request
     * @return
     */
    Boolean add(ProjectUseControlRequest request);
    /**
     * 根据主键更新
     * @param request
     * @return
     */
    Boolean updateByKey(ProjectUseControlRequest request);
    /**
     * 根据主键删除
     * @param id
     * @return
     */
    Boolean deleteByKey(long id);

    /**
     * 人员管理开通校验
     * @param projectId
     * @return
     */
    Boolean manageOpen(long projectId);

    /**
     * 数据提报开通校验
     * @param projectId
     * @return
     */
    Boolean reportOpenValid(long projectId);

    /**
     * 动火作业开通校验
     * @param projectId
     * @return
     */
    Boolean hotWorkOpenValid(long projectId);

    /**
     * 动火作业开通校验（动火作业未上传定时任务查询）
     * @param projectId
     * @return
     */
    Boolean hotWorkScheduleOpenValid(long projectId);

    /**
     * 动火作业开通校验（动火作业未开通定时任务查询）
     * @param projectId
     * @return
     */
    Boolean hotWorkManagementScheduleOpenValid(long projectId);

    /**
     * 动火作业开通状态
     * @param projectId
     * @return
     */
    Boolean hotWorkOpenStatus(long projectId);

    /**
     * 卡点提示
     * @param projectId
     * @return
     */
    Object tip(long projectId);

    /**
     * 当前无动火作业
     * @param projectId
     * @return
     */
    Boolean noHotWork(long projectId);
}
